import axios from 'axios'

//1、方式一，也可以把这三个参数封装成一个对象
export function request1(config,success,failure){
    //1、创建axios实例
    const instance=axios.create({
        baseURL:'http://123.207.32.32:8000',
        timeout:5000
    })
    // 2、axios拦截器,instance改axio是全局拦截
    // 2.1 请求拦截
    instance.interceptors.request.use(config=>{
        console.log('这里是返回配置：'+config)
        //要返回，不然会请求失败
        // 应用场景：
        // 1、config中有些信息不符合要求；
        // 2、发送请求的时候，界面中等待图标
        // 3、某些请求，需要token等信息，可以判断跳转等界面
        return config;
    },err=>{ //发送不出去的时候
        console.log(err)
    });

    // 2.2 响应拦截
    instance.interceptors.response.use(res=>{
        console.log('response  res:',res)
        return res;
    },err=>{
        console.log('response  err:',err)
    });

    // 3、发送请求
    instance(config)
    .then(res=>{
        console.log(res)
        // 返回结果
        success(res)
    }).catch(err=>{
        failure(err)
    })
}
//方式二，promise方式
// export function request(config){

//     return new Promise((resolve,reject)=>{
//          //1、创建axios实例
//             const isntance=axios.create({
//                 baseURL:'http://123.207.32.32:8000',
//                 timeout:5000
//             })

//             // 发送请求
//             isntance(config)
//             .then(res=>{
//                resolve(res)
//             }).catch(err=>{
//                 reject(err)
//             })
//     })
   
// }
// 改进

export function request(config){
         //1、创建axios实例
            const isntance=axios.create({
                baseURL:'http://152.136.185.210:7878/api/m5',
                timeout:5000
            })

            //拦截器
            isntance.interceptors.response.use(res=>{
                // console.log('response  res:',res)
                return res.data;
            },err=>{
                console.log('response  err:',err)
            });
        
            // 发送请求，因为isntance返回就是promise，所以不用new
            return isntance(config)
   
}